package cc.momas.momall.sso.web;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.converter.json.MappingJacksonValue;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import cc.momas.common.utils.E3Result;
import cc.momas.momall.service.ITokenService;

/**
 *  根据token查用户的Controller
 * @author sod
 *
 */
@Controller
public class TokenController {

	@Autowired
	private ITokenService tokenService;
/**
 * 
 * @param token 一个键,用于到业务逻辑里取用户对象
 * @param callback 如果这个请求是使用了跨域请求,使用了jsonp,这里会是一个js函数名
 * @return 封装序列化的用户对象json字符串
 */
//	@RequestMapping(value = "/user/token/{token}", produces = MediaType.APPLICATION_JSON_VALUE + ";charset=utf-8")
//	@ResponseBody
//	public String getUserByToken(@PathVariable String token, String callback) {
//		E3Result result = tokenService.getUserByToken(token);
//		// 响应结果之前,判断是否为jsonp
//		if (StringUtils.isNotBlank(callback)) {
//			// 把结果封装成一个js语句响应
//			return callback + "(" + JsonUtils.objectToJson(result) + ");";
//		}
//		return JsonUtils.objectToJson(result);
//	}

	// spring 4.1(包括spring 4.1)之后的写法
	@RequestMapping(value = "/user/token/{token}")
	@ResponseBody
	public Object getUserByToken(@PathVariable String token, String callback) {
		E3Result result = tokenService.getUserByToken(token);
		// 响应结果之前,判断是否为jsonp
		if (StringUtils.isNotBlank(callback)) {
			// 把结果封装成一个js语句响应(jsonp)
			MappingJacksonValue mappingJacksonValue = new MappingJacksonValue(result);
			mappingJacksonValue.setJsonpFunction(callback);
			return mappingJacksonValue;
		}
		return result;
	}
	
//前台ajax参考:
//var _token = $.cookie("token");;
//$.ajax({
//	url : "http://localhost:8089/user/token" + _token,
//	dataType : "jsonp",
//	type : "GET",
//	success : function(data){
//		if(data.status == 200) {
//			var username = data.data.username;
//			console.log(username);
//		}
//	}
//})


}
